package com.flynn.rock.crm.service.customer;

import com.flynn.rock.crm.model.customer.request.PageCustomerRequest;
import com.flynn.rock.crm.model.customer.request.PageFollowUpRecordRequest;
import com.flynn.rock.crm.model.customer.request.PageOperateRecordRequest;
import com.flynn.rock.crm.model.customer.request.SaveCustomerRequest;
import com.flynn.rock.crm.model.customer.request.SaveFollowUpRecordRequest;
import com.flynn.rock.crm.model.customer.request.TransferCustomerRequest;
import com.flynn.rock.crm.model.customer.vo.CustomerVo;
import com.flynn.rock.crm.model.customer.vo.FollowUpRecordIdVo;
import com.flynn.rock.crm.model.customer.vo.ListCustomerVo;
import com.flynn.rock.crm.model.customer.vo.CustomerIdVo;
import com.flynn.rock.crm.model.customer.vo.ListFollowUpRecordVo;
import com.flynn.rock.crm.model.customer.vo.ListOperateRecordVo;
import com.flynn.rock.model.PageResult;

public interface CustomerService {

    CustomerIdVo saveCustomer(SaveCustomerRequest request);

    CustomerVo getCustomer(Long customerId);

    void deleteCustomer(Long customerId);

    PageResult<ListCustomerVo> pageCustomer(PageCustomerRequest request);

    void transferCustomer(TransferCustomerRequest request);

    FollowUpRecordIdVo saveFollowUpRecord(SaveFollowUpRecordRequest request);

    PageResult<ListFollowUpRecordVo> pageFollowUpRecord(PageFollowUpRecordRequest request);

    PageResult<ListOperateRecordVo> pageOperateRecord(PageOperateRecordRequest request);
}
